#ifndef CLAVEDATOCUBA_H_
#define CLAVEDATOCUBA_H_

#include <string>

#include "Clave.h"
#include "DatoCuba.h"
#include "includes.h"

namespace Toolkit
{

class ClaveDatoCuba: public Clave
{
public:

	ClaveDatoCuba(const DatoCuba &datoCuba, const TipoSerializacion &tSerializacion);
	virtual ~ClaveDatoCuba();

    virtual void serializar(stringstream &stream) const;

    virtual void hidratar(stringstream &stream);

    virtual bool operator == (const Clave&clave) const;
    virtual bool operator == (const Dato &dato) const;

    virtual bool operator < (const Clave &clave) const;
    virtual bool operator < (const Dato &dato) const;

    virtual Clave* clonar() const;

    virtual Clave* crearDesdeDato(const Dato& dato) const;


private:
    string claveHasheada;
    TipoSerializacion tSerializacion;

    /*
     * Constructor necesario para clonar la clave
     */
    ClaveDatoCuba(string claveHasheada, const TipoSerializacion &tSerializacion);
};

}

#endif /* CLAVEDATOCUBA_H_ */
